package com.example.demo.zerenlian2;

import com.example.demo.zerenlian.AbstractChain;
import lombok.Data;

import java.util.List;

/* ━━━━━━佛祖保佑━━━━━━
 *                  ,;,,;
 *                ,;;'(    社
 *      __      ,;;' ' \   会
 *   /'  '\'~~'~' \ /'\.)  主
 * ,;(      )    /  |.     义
 *,;' \    /-.,,(   ) \    码
 *     ) /       ) / )|    农
 *     ||        ||  \)
 *     (_\       (_\
 * ━━━━━━永无BUG━━━━━━
 * @author ：zjq
 * @date ：2021/4/25 0:42
 * @description: TODO            抽象类 实现 两个 fire (调用下一个)方法，
 *                               而 具体 实现类 实现 具体的 逻辑方法
 *                               相比于 zerenlian1 其实就是把fire逻辑搬到抽象类
 * @version: V1.0
 * @slogan: 天下风云出我辈，一入代码岁月催
 */
@Data
public abstract class AbstractChain2<E> implements ChainInterface<E> {


    private AbstractChain2 next;


    /**
     * 调用下一个 handler
     *
     * @param LeaveDays
     */
    @Override
    public void fireHandler(int LeaveDays) {
        if (next != null) {
            next.handler(LeaveDays);
        }
    }


    /**
     * 调用 下一个 exit
     *
     * @param LeaveDays
     */
    @Override
    public void fireExit(int LeaveDays) {
        if (next != null) {
            next.exit(LeaveDays);
        }
    }

}
